﻿/**********************************************************/
/* Parameterklasse */
/* 13-10-2010 - Groep 6: Scheidsrechter(Lars Mohr 0629693, Roy Mengelers 0705020, Roy Lieben 0847186, Timothy Janssen 0951986, Lars Brand 0901164 - */
/*	
/* Omschrijving:
/* Hier staan de objecten InputScheidsrechter met de waardes en het object ReturnScheidsrechter met de waardes.*/
/**********************************************************/
using System.Collections.Generic;
using Roborally.CommonData.GlobaleTypes;


namespace Roborally.Scheidsrechter
{
    public class InputScheidsrechter
    {
        public SpelerGegevens GegevensEenSpeler { get; set; }
        public List<SpelerGegevens> GegevensSpelers { get; set; }
        public List<int> Prioriteiten { get; set; }

        public int Schadepunten { get; set; }
        public IModel Model { get; set; }
        public int TimerTijd { get; set; }
        public IProgramKaart Kaart { get; set; }
        public int RegistratieFase { get; set; }

        public InputScheidsrechter()
        {
            GegevensSpelers = new List<SpelerGegevens>();
            Prioriteiten = new List<int>();
        }

        public InputScheidsrechter Copy()
        {
            InputScheidsrechter input = new InputScheidsrechter() {
                Schadepunten = this.Schadepunten,
                TimerTijd = this.TimerTijd,
                RegistratieFase = this.RegistratieFase
            };
            if (this.Model != null) input.Model = this.Model;
            if (this.GegevensEenSpeler != null) input.GegevensEenSpeler = this.GegevensEenSpeler.Copy();
            if (this.Kaart != null) input.Kaart = this.Kaart;
            foreach (SpelerGegevens gegevensSpeler in this.GegevensSpelers)
                input.GegevensSpelers.Add(gegevensSpeler.Copy());
            foreach (int prioriteit in this.Prioriteiten)
                input.Prioriteiten.Add(prioriteit);
            return input;
        }
    }

    public class ReturnScheidsrechter
    {
        public SpelerGegevens GegevensEenSpeler { get; set; }
        public List<SpelerGegevens> GegevensSpelers { get; set; }
        public List<int> Prioriteiten { get; set; }

        public int TimerTijd { get; set; }
        public int AantalKaarten { get; set; }
        public int Damage { get; set; }

        public ReturnScheidsrechter()
        {
            GegevensSpelers = new List<SpelerGegevens>();
            Prioriteiten = new List<int>();
        }

        public ReturnScheidsrechter Copy()
        {
            ReturnScheidsrechter output = new ReturnScheidsrechter() {
                GegevensEenSpeler = this.GegevensEenSpeler.Copy(),
                TimerTijd = this.TimerTijd,
                AantalKaarten = this.AantalKaarten,
                Damage = this.Damage
            };
            foreach (SpelerGegevens gegevensSpeler in this.GegevensSpelers)
                output.GegevensSpelers.Add(gegevensSpeler.Copy());
            foreach (int prioriteit in this.Prioriteiten)
                output.Prioriteiten.Add(prioriteit);
            return output;
        }
    }
}
